using BunnyEater.Common.ResponseOutput;
using BunnyEater.Domain.Base;
using BunnyEater.Service.TraceableService.FirmService.Dto;
using System.Threading.Tasks;

namespace BunnyEater.Service.TraceableService.FirmService
{
    /// <summary>
    /// 企业服务接口，定义企业相关的业务操作
    /// </summary>
    public interface IFirmService : ITransientService
    {
        /// <summary>
        /// 新增企业
        /// </summary>
        /// <param name="dto">企业信息</param>
        /// <returns>操作结果</returns>
        Task<ResponseReturnsEntity<bool>> AddFirm(FirmListDto dto);
        /// <summary>
        /// 更新企业信息
        /// </summary>
        /// <param name="dto">企业信息</param>
        /// <returns>操作结果</returns>
        Task<ResponseReturnsEntity<bool>> UptFirm(FirmListDto dto);
        /// <summary>
        /// 删除企业（逻辑删除）
        /// </summary>
        /// <param name="id">企业Id</param>
        /// <returns>操作结果</returns>
        Task<ResponseReturnsEntity<bool>> DeleteFirm(string id);
        /// <summary>
        /// 根据Id获取企业信息
        /// </summary>
        /// <param name="id">企业Id</param>
        /// <returns>企业信息</returns>
        Task<ResponseReturnsEntity<FirmListDto>> GetFirmById(string id);
        /// <summary>
        /// 分页获取企业列表
        /// </summary>
        /// <param name="query">分页查询参数</param>
        /// <returns>企业分页数据</returns>
        Task<ResponseReturnsEntity<Page<FirmListDto>>> GetPagedFirmsAsync(FirmPagedQueryDto query);
    }
}